
pub fn new_count_distinct(input_str: &str) -> usize {
    //题目1：自己设计实现一个统计不重复元素个数的算法，输入为逗号分隔的字符串。(20)
    //输入：1,爱,好,0,100,爱,1,物理,化学,物理,AI,AI
    //输出：8 
    let byts :&[u8] = input_str.as_bytes();
    let mut pool :Vec<(usize,usize)> = Vec::new(); //存储已发现的短语,存的是起位置,长度，起始位置，长度
    let mut cnt :usize = 0; //计数
    let l:usize = byts.len(); let mut i_pre :usize = 0;
    for i in 0..l {
        if byts[i] == (b',' as u8) {
            if i > i_pre {
                if is_not_exists(byts, &pool, i_pre,i-1) {
                    pool.push((i_pre,i- 1));
                    cnt = cnt+1
                }
            }else{
                //连续的逗号,不算
            }
            i_pre = i+1; //起始位置改变
        }
    }
    if l > i_pre && byts[i_pre] != (b',' as u8) { //最后不是连续的逗号
        if is_not_exists(byts, &pool, i_pre,l-1) {
            pool.push((i_pre,l- 1));
            cnt = cnt+1
        }
    }
    //println!("字符串:{} 计算的短语数: {} 数组长度: {}", input_str,cnt, l); 
    cnt
}

//检查是否重复
pub fn is_not_exists(src:&[u8], pm_pool: &Vec<(usize,usize)>, pm_start:usize,pm_end:usize) -> bool {
    for i in pm_pool{
        let src1:&[u8] = &src[i.0 .. i.1+1];
        let src2:&[u8] = &src[pm_start .. pm_end+1];
        if src1.eq(src2) {
            //println!("相同短语1: {} 短语2: {}", String::from_utf8_lossy(src1),String::from_utf8_lossy(src2)); 
            return false //有相同的,则直接返回了
        }
    }
    true
}